第一章:概述(古典密码算法) |
您所在的位置:网站首页 › i h k c e c n组成单词 › 第一章:概述(古典密码算法) |
置换算法单表替换密码算法多表代替密码算法
置换(Permutation)密码
对明文字符或者字符组进行位置移动的密码明文的字母保持相同,但顺序被打乱了。例如:ATTACKATDAWN(attack at dawn) 黎明发起攻击可以把它的奇数位和偶数位分开组成一个单词:ATCADW TAKTAN ,这两个单词凑到一起,就成为了ATCADWTAKTAN,这样在即使敌手捕获到了明文,也无从分析出密文。
代替密码
代替(Substitution)密码构造一个或者多个密文文字表,然后用密文字母表中的字母或者字母组来代替明文字母或者字母组,各字母或者字母组的相对位置不变,但是其本身的值改变了。代替密码分为单表代替密码和多表代替密码
字母与数字的转换 代替密码算法针对英文字母进行处理。首先将26个英文字母与十进制数字中的0~25依次对应,如下表所示,而这里的数字的加法和乘法都定义为模26的加法和乘法。![]() 单表代替密码可分为: 加法密码乘法密码仿射密码依次介绍: 加法密码 y=(x+k)mod26明文:x密文:y密钥:k(有26重选择)解密:x=(y-k)mod26凯撒密码(Caesar)就是一种加法密码(k=3) 乘法密码 y=kx(mod26)明文:x密文:y密钥:k(有12种选择)解密:x=k-1y(mod26)条件:(k,26)=1(也就是说k与26的公共约数只有1,叫做k与26互素)通过上面的介绍,乘法密码的关键在于计算k-1: 方法:扩展的欧几里得算法若(m,n)=1,则存在整数k1,k2,使得k1m+k2n=1这里k1就是:m-1 mod n注意k1要为整数那么在0~25之中,只有12个数字是和26互素的。 通过以上的分析,加法和乘法各有好处,能不能把二者结合起来使用呢? 仿射密码 加密函数:y=(ax+b) mod 26密钥:a,b解密函数:x=a-1(y-b)(mod26)好处就是增大了密钥量,这个时候a有12种选择,b有26种选择,密钥量扩展到了312个。单表替代的统计分析: 单表替代的特点就是相同的明文被加密成相同的密文,这使得统计分析成为了可能。原因就是,我们所使用的英文字母,它出现的频率是有规律的,只要能够收集到足够多的密文,通过统计就能够很容易的进行密码的破译了。比如:常见的字母e出现的频率为0.127,收集到足够多的信息之后,我们统计字母中出现频率接近0.127的字母,很大概率就是e了。![]() Vigenera(维吉尼亚)密码 如图: 大概思想: 就是把26个英文字母,依次按照加法密码的方式,第一行加0,依次往下一直加到25,列成一个表。当然这个顺序是可以打乱的,只要加密与解密者清楚,而敌手不知道即可。 然后选择一个词组作为密钥,比如hold。 那么我们对一组明文进行加密时,可以把hold作为参照去寻找密文。 比如:我要加密:this is the plain text(写成明文就是thisistheplaintext),以hold作为密钥,如下图: 那么去加密密文,就可以按照这个表,寻找所对应的字母,比如t 它在第 h 行对应的是A,h在第 o 行对应的是V,以此类推,如图: 那么对应的密文就可以唯一确定了,如图: h在第一次加密的时候,加密成了V,在第二次加密的时候,加密成了k。这就避免了敌手通过统计学分析来破译密文。 由于密钥是一个单词,所以它可以有很多很多种可能性。 用数学语言描述多表代换密码 多表代换密码首先将明文M分为由n个字母构成的分组M1,M2,……Mj,对每个分组Mi的加密为:Ci=(A*Mi+B) mod N,i=1,2…,j其中(A,B)是密钥,A是n*n的可逆矩阵,满足gcd (|A|,N)=1(|A|是行列式),B=(B1,B2,…,Bn)T,C=(C1,C2,…,Cn)T,Mi=(m1,m2,…,mn)T对密文分组Ci的解密为:Mi=(A-1(Ci-B)) mod N,i=1,2,…,j例题如下: 加密完之后,就需要解密了:
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |